﻿namespace IslandUnit
{
    public interface IDependencySetup
    {
        /// <summary>
        /// Use this method to add a dependency to isolator. This is a dependency for which you will create mocks and stubbies.
        /// </summary>
        /// <typeparam name="TDependency">Type of the dependency that will be added</typeparam>
        /// <returns>Return an <see cref="Dependency{TDependency}"/> reference</returns>
        /// <example>
        /// How to add an dependency
        /// <code>
        /// // Arrange
        /// var isolator = new Isolator();
        ///
        /// // Act
        /// isolator
        ///     .AddDependency{IRepository}()
        ///         .WithStubFor(m => m.AllList1())
        ///             .ReturningWith(20);
        /// </code>
        /// </example>
        Dependency<TDependency> AddDependency<TDependency>() where TDependency : class;
        
        Dependency<TDependency> SetDependency<TDependency>() where TDependency : class;
    }
}